/* Copyright (c) 2004-2024 Peigen.info. All rights reserved. */

package info.peigen.hotpot.demo.scheduler.service.step.base;

import info.peigen.hotpot.demo.scheduler.domain.Task;
import info.peigen.hotpot.demo.scheduler.domain.Trade;

import java.util.List;

/**
 * <b>(TaskProcessor)</b>
 *
 * @author Lihai
 * @version 1.0.0
 * @since 2023/9/9
 */
public interface TaskProcessor {

    /**
     * 构建task领域对象
     *
     * @param trade
     *
     * @return
     */
    Task buildTask(Trade trade);

    /**
     * 添加执行步骤处理器
     *
     * @return
     */
    List<AbstractStepProcessor> addSteps();

    /**
     * 执行下一个步骤
     *
     * @param taskContext
     */
    void executeNextStep(TaskContext taskContext);

    /**
     * 触发该处理器执行的事件
     *
     * @return
     */
    Class triggerEvent();
}
